<?php
/**
 * Created by PhpStorm.
 * User: yanghe
 * Date: 2016/4/26
 * Time: 16:50
 */
namespace MyClass\Article;

use Illuminate\Support\Facades\DB;

class ArticleBase
{

    public $Article_id;

    public static function find()
    {
        $res=DB::table("article")
            ->join("user","user_id","=","article_user")->get();
        if($res)
        {
            return $res;
        }
        else
        {
            return false;
        }
    }
    public static function select($queryLimit)
    {
        /*
         * $query_limit
         * |-start  起始
         * |-num   每页条数
         * |-class  类别
         * |-sort   排序
         * |-search 搜索关键字
         * |-user   用户筛选（如果不设置查看所有文章）
         * |-desc   是否逆转排序即倒序(默认正序)
         * |-articleClass 专题限制
         * |*/

        /*
         * $return_data
         * |-status 是否成功
         * |-message 消息
         * |-data   数据 DB返回的二维结构
         * |-num    数据总条数
         * |*/
        $query=DB::table("article");

        //按照条件排序

        if(isset($queryLimit["sort"]))
        {
            if(isset($queryLimit["desc"]) && true==$queryLimit["desc"])
            {
                $query=$query->orderBy($queryLimit["sort"],"desc");
            }
            else
            {
                $query=$query->orderBy($queryLimit["sort"]);
            }
        }

      //按照条件查询

      if(isset($queryLimit["class"]))
      {
        $query=$query->join("article_class","article_class","=","article_class_id")
            ->where("article_class_name","=",$queryLimit["class"]);
      }
       elseif(isset($queryLimit["user"]))
       {
           $query=$query->join("user","user_id","=","article_user")
               ->where("user_nickname","=",$queryLimit["user"]);
       }
        elseif(isset($queryLimit["search"]))
        {
            $query=$query->where("article_name","like","%".$queryLimit["search"]."%");

        }
        //对查询出来的数据进行排序

        $query_num=clone $query;//克隆出来不适用原来的对象

       $return_data["total"]=$query_num->select(DB::raw('count(*) as num'))->first()->num;
        $return_data["data"]=$query;
        //开始时的条数
        if(isset($queryLimit["start"]))
        {
            $query=$query->skip($queryLimit["start"]);
        }
        if(isset($queryLimit["num"]))
        {
            if($queryLimit["num"]==0)
            {
                $return_data["status"]=true;
                $return_data["message"]="查到信息，但是num为0";
                $return_data["data"]=null;
                return $return_data;
            }
            $query->take($queryLimit["num"]);
        }
        $query->leftjoin("article_class","article_class","=","article_class_id");
        $return_data["data"]=$query->get();
        $return_data["message"]="信息获取成功";
        $return_data["status"]=true;
        if($return_data)
        {
            return $return_data;
        }
        else
        {
            return false;
        }
    }

    /**
     * @param $data
     * @return bool
     */
    public static function addArticle($data)
    {
        $data["article_create_time"]=date("Y-m-d H:i:s");
        $data["article_update_time"]=date("Y-m-d H:i:s");
        $res=DB::table("article")->insert($data);
        if($res)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    /**
     * @param $id
     */
    public function __construct($id)
    {
        $this->Article_id=$id;
    }

    /**
     * @return bool
     */
    public function deleteArticle()
    {
        $res=DB::table("article")
            ->where("article_id","=",$this->Article_id)
            ->delete();
        if($res)
        {
            return true;
        }
        else
        {
            return false;
        }

    }

    /**
     * @param $data
     * @return bool
     */
    public function updateArticle($data)
    {
<<<<<<< HEAD

=======
        $data["article_update_time"]=date("Y-m-d H:i:s");
        $res=DB::table("article")
            ->where("article_id","=",$this->Article_id)
            ->update($data);
        if($res)
        {
            return true;
        }
        else
        {
            return false;
        }
>>>>>>> yanghe
    }

}